# -*- coding: utf-8 -*-
# 创建时间：2021/7/16 11:46

import urllib3.util
from bs4 import BeautifulSoup
import requests
import time, math, random, json
import pymysql
import re
from selenium import webdriver
from hhy import FileUtil,DateUtil,ToolUtil,HttpUtil

__author__ = 'LuckyHhy'

# 浏览器自动化爬取古诗词发送给远程服务器

# 获取网页内容
def get_content(url):
    headers = {"User-Agent": HttpUtil.AgentRandom()}
    A = requests.session()  # 用一个会话请求
    A.headers = headers
    cont = A.get(url, timeout=20, allow_redirects=False)
    return cont.text


def get_all_keys():
    url = "https://so.gushiwen.cn/mingjus/default.aspx"
    html = get_content(url)
    soup = BeautifulSoup(html, 'html.parser')
    type = soup.find(class_="main3").find(class_="left").find(class_="titletype").find(class_="sright").find_all("a")
    list_str = []
    for i in type:
        list_str.append(i.get_text())  # 获取

    return list_str


# 获取总页码
def get_all_page(keys):
    base_url = "https://so.gushiwen.cn/mingjus/default.aspx?tstr={}".format(keys)
    htnl = get_content(base_url)
    soup = BeautifulSoup(htnl, 'html.parser')
    page_text = soup.find(class_="main3").find(class_="left").find(class_="pagesright").find("span").string
    num = re.findall('\d+', page_text)
    page = int(num[0]) + 1
    # print(page)
    return page


# 保存到文本
def save_txt(*args):
    for i in args:
        with open('mingju.txt', 'a', encoding='utf-8') as f:
            f.write(i)


def run_main():
    # 所有的关键词
    all_keys = get_all_keys()
    browser = webdriver.Firefox(executable_path=r'D:\chromedriver\geckodriver.exe')
    browser.get('https://so.gushiwen.cn/mingjus/default.aspx')
    time.sleep(1)
    # output = """名句类型：{} \n------------\n内容：{} -- {} \n------------\n"""
    for y in all_keys:
        # 点击当前关键词
        browser.find_element_by_link_text(y).click()
        print("正在爬取关键词【{}】数据".format(y))
        # 获取当前关键词的总页码
        all_page = get_all_page(y)
        # 有几页就点击几次
        for i in range(1, all_page):
            # 将滚动条移动到页面底部，用于加载所有信息
            javascript = "var q=document.documentElement.scrollTop=50000"
            # 执行 javascript 移动滚动条
            browser.execute_script(javascript)
            # 等待3秒，有些异步加载的数据加载慢
            time.sleep(1)
            print("正在爬取第{}页数据".format(i))
            # 获取页面内容
            html = browser.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]').get_attribute('innerHTML')
            soup = BeautifulSoup(html, 'html.parser')
            page_text = soup.find_all(class_="cont")
            alllist = []
            for z in page_text:
                all_a = z.find_all("a")
                lg = len(all_a)
                if lg == 1:
                    co = ''
                else:
                    co = all_a[1].get_text()

                content = all_a[0].get_text() + "--" + co
                alllist.append(content)
                # 写入日志
                # save_txt(output.format(y, content, co))

            # 向远程服务器发送数据
            send_post_data(alllist)
            print('发送数据：',alllist)
            print("第{}页数据爬取完成".format(i))
            # 点击下一页按钮
            browser.find_element_by_xpath('/html/body/div[2]/div[1]/form/div/a[1]').click()
            time.sleep(2)


        print("关键词【{}】数据爬取完成".format(y))
        time.sleep(6)

    # 退出
    browser.quit()



# 发送数据
def send_post_data(data):
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "Content-Type": "application/json"}
    resp = requests.post("https://bra.polymerizations.com/hhy/index/test",data=json.dumps({"data": data,"time":int(time.time())}, ensure_ascii=False).encode("utf-8"), headers=headers)
    print("发送结果：",resp)




def main():
    run_main()
    #data=['雨打梨花深闭门，忘了青春，误了青春。--唐寅《一剪梅·雨打梨花深闭门》', '春宵一刻值千金，花有清香月有阴。--苏轼《春宵·春宵一刻值千金》', '人面不知何处去，桃花依旧笑春风。--崔护《题都城南庄》', '夜月一帘幽梦，春风十里柔情。--秦观《八六子·倚危亭》', '沾衣欲湿杏花雨，吹面不寒杨柳风。--志南《绝句》', '红酥手，黄縢酒，满城春色宫墙柳。--陆游《钗头凤·红酥手》', '江南无所有，聊赠一枝春。--陆凯《赠范晔诗》', '人间四月芳菲尽，山寺桃花始盛开。--白居易《大林寺桃花》', '沉舟侧畔千帆过，病树前头万木春。--刘禹锡《酬乐天扬州初逢席上见赠》', '知否，知否？应是绿肥红瘦。--李清照《如梦令·昨夜雨疏风骤》', '春风十里扬州路，卷上珠帘总不如。--杜牧《赠别》', '红豆生南国，春来发几枝。--王维《相思》', '竹外桃花三两枝，春江水暖鸭先知。--苏轼《惠崇春江晚景 / 惠崇春江晓景》', '人闲桂花落，夜静春山空。--王维《鸟鸣涧》', '天街小雨润如酥，草色遥看近却无。--韩愈《早春呈水部张十八员外 / 初春小雨 / 早春》', '春风又绿江南岸，明月何时照我还？--王安石《泊船瓜洲》', '等闲识得东风面，万紫千红总是春。--朱熹《春日》', '迟日江山丽，春风花草香。--杜甫《绝句二首》', '绿杨烟外晓寒轻，红杏枝头春意闹。--宋祁《玉楼春·春景》', '春潮带雨晚来急，野渡无人舟自横。--韦应物《滁州西涧》', '草长莺飞二月天，拂堤杨柳醉春烟。--高鼎《村居》', '有情芍药含春泪，无力蔷薇卧晓枝。--秦观《春日》', '乱花渐欲迷人眼，浅草才能没马蹄。--白居易《钱塘湖春行》', '若待上林花似锦，出门俱是看花人。--杨巨源《城东早春》', '两个黄鹂鸣翠柳，一行白鹭上青天。--杜甫《绝句》', '好雨知时节，当春乃发生。--杜甫《春夜喜雨》', '渭城朝雨浥轻尘，客舍青青柳色新。--王维《渭城曲 / 送元二使安西》', '胜日寻芳泗水滨，无边光景一时新。--朱熹《春日》', '春日游，杏花吹满头。--韦庄《思帝乡·春日游》', '春日宴，绿酒一杯歌一遍。--冯延巳《长命女·春日宴》', '春色满园关不住，一枝红杏出墙来。--叶绍翁《游园不值》', '几处早莺争暖树，谁家新燕啄春泥。--白居易《钱塘湖春行》', '燕子不归春事晚，一汀烟雨杏花寒。--戴叔伦《苏溪亭》', '不知细叶谁裁出，二月春风似剪刀。--贺知章《咏柳 / 柳枝词》', '芳树无人花自落，春山一路鸟空啼。--李华《春行即兴》', '月出惊山鸟，时鸣春涧中。--王维《鸟鸣涧》', '今夜偏知春气暖，虫声新透绿窗纱。--刘方平《夜月 / 月夜》', '黄师塔前江水东，春光懒困倚微风。--杜甫《江畔独步寻花·其五》', '碧玉妆成一树高，万条垂下绿丝绦。--贺知章《咏柳 / 柳枝词》', '花气袭人知骤暖，鹊声穿树喜新晴。--陆游《村居书喜》', '律回岁晚冰霜少，春到人间草木知。--张栻《立春偶成》', '草树知春不久归，百般红紫斗芳菲。--韩愈《晚春》', '孤山寺北贾亭西，水面初平云脚低。--白居易《钱塘湖春行》', '泥融飞燕子，沙暖睡鸳鸯。--杜甫《绝句二首》', '古木阴中系短篷，杖藜扶我过桥东。--志南《绝句》', '东风袅袅泛崇光，香雾空蒙月转廊。--苏轼《海棠·东风袅袅泛崇光》', '留连戏蝶时时舞，自在娇莺恰恰啼。--杜甫《江畔独步寻花·其六》', '狂风落尽深红色，绿叶成阴子满枝。--杜牧《怅诗》', '春未老，风细柳斜斜。--苏轼《望江南·超然台作》', '庭树不知人去尽，春来还发旧时花。--岑参《山房春事二首》']
    #send_post_data(data)
    #print(da)
    pass

if __name__ == '__main__':
    main()
